/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ifrr.gepro.pessoa.handler;

import br.ifrr.gepro.pessoa.bean.ClienteBean;
import br.ifrr.gepro.pessoa.bean.PessoaBean;
import br.ifrr.gepro.pessoa.dao.ClienteDao;
import br.ifrr.gepro.pessoa.dao.PessoaDao;
import br.ifrr.gepro.util.DAOException;
import br.ifrr.gepro.util.JsfUtil;
import br.ifrr.gepro.util.Navegacao;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

/**
 *
 * @author rafael
 */
@ManagedBean(name = "cliente")
@SessionScoped
public class ClienteMB {

    private ClienteBean novoCliente = new ClienteBean();
    private PessoaBean novaPessoaBean = new PessoaBean();

    public PessoaBean getNovaPessoaBean() {
        return novaPessoaBean;
    }

    public void setNovaPessoaBean(PessoaBean novaPessoaBean) {
        this.novaPessoaBean = novaPessoaBean;
    }
    private int etapaCadastro = 0;
    private ArrayList<ClienteBean> listaClientes = new ArrayList<ClienteBean>();

    public List<ClienteBean> getClientes() throws DAOException {
        return new ClienteDao().listar();

    }

    public List<SelectItem> getClientesCombo() throws DAOException {
        List<SelectItem> lista = new ArrayList<SelectItem>();
        for (ClienteBean c : getClientes()) {
            lista.add(new SelectItem(c.getIdCliente(), c.getFkPessoa().getNome()));
        }
        return lista;
    }

    public String preparaCadastro() {
        etapaCadastro = 0;
        novoCliente = new ClienteBean();
        novaPessoaBean = new PessoaBean();
        return Navegacao.paginaCadCliente;
    }

    public String preparaListar() {
        return null;
    }

    public String editar() throws DAOException {
        etapaCadastro = 0;
        int c = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("cliente"));
        novoCliente = (ClienteBean) new ClienteDao().selecionar(c);
        return Navegacao.paginaCadCliente;
    }

    public String excluir()  {
        try{
        int c = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("idCliente"));
        new ClienteDao().excluir(new ClienteBean(c));
        JsfUtil.showMessageInfo("Operação realizada com sucesso!");}
        catch (Exception e){
            
            System.out.println(e.getMessage());
            System.out.println(e.getCause());
            JsfUtil.showMessageErro("Erro!");
        
        }
        return null;
    }

    public String salvar()  {
    try{
        if (novoCliente.getIdCliente() != null && novaPessoaBean.getIdPessoa() != null) {
            new PessoaDao().alterar(novaPessoaBean);
//            Integer idPessoa = Integer.parseInt(JsfUtil.getValorDeParamentro("idPessoa"));
//            //novoCliente.setFkPessoa((PessoaBean)new PessoaDao().selecionar(idPessoa));
            new PessoaDao().alterar(novaPessoaBean);
            new ClienteDao().alterar(novoCliente);
            
//            PessoaMB p = new PessoaMB();
//            p.setNovapessoa((PessoaBean) new PessoaDao().selecionar(idPessoa));
//            JsfUtil.setMB(p, "pessoa");
            JsfUtil.showMessageInfo("Dados salvos com Sucesso!");
        } else {
            new PessoaDao().inserir(novaPessoaBean);
            System.out.println(novaPessoaBean.getIdPessoa());
            
            novoCliente.setFkPessoa(novaPessoaBean);
            new ClienteDao().inserir(novoCliente);
            PessoaMB p = new PessoaMB();
            JsfUtil.setMB(p, "cliente");
            JsfUtil.showMessageInfo("Dados salvos com Sucesso!");
        }
        }catch (Exception e){
            
            System.out.println(e.getMessage());
            System.out.println(e.getCause());
            JsfUtil.showMessageErro("Erro!");
        
        }
        etapaCadastro = 1;
        return null;
    }

    public ClienteBean getNovoCliente() {
        return novoCliente;
    }

    public void setNovoCliente(ClienteBean novoCliente) {
        this.novoCliente = novoCliente;
    }

    public int getEtapaCadastro() {
        return etapaCadastro;
    }

    public void setEtapaCadastro(int etapaCadastro) {
        this.etapaCadastro = etapaCadastro;
    }

    public ArrayList<ClienteBean> getListaClientes() throws DAOException {
        listaClientes = (ArrayList<ClienteBean>) new ClienteDao().listar("razaosocial", true);
        return listaClientes;
    }

    public void setListaClientes(ArrayList<ClienteBean> listaClientes) {
        this.listaClientes = listaClientes;
    }
}
